#include <bits/stdc++.h>
using namespace std;
using ll = long long;

int main() {
  int n;    // 字符串长度
  string s; // 输入的二进制字符串（由'0'和'1'组成）
  cin >> n >> s;

  // num[0]：当前0的个数为偶数的情况计数
  // num[1]：当前0的个数为奇数的情况计数
  vector<ll> num(2, 0);

  // 初始状态：0个0（偶数），所以初始计数为1
  num[0] = 1;

  int current_parity = 0; // 当前0的个数的奇偶性（0表示偶数，1表示奇数）
  ll result = 0;          // 结果：符合条件的子串数量

  for (char c : s) {
    // 如果遇到'0'，切换奇偶性（0变1，1变0）
    if (c == '0') {
      current_parity ^= 1;
    }

    /* 累加与当前奇偶性相同的历史计数： 也就是说：
     偶偶，奇奇：  下一次又出现同样的奇偶性，那么0的个数增加了偶数个
    每个历史位置 j 与当前位置 i 之间的子串 s[j+1..i]，其'0'的个数 = 前缀0计数(i)
    - 前缀0计数(j)，由于两者奇偶性相同，差值必为偶数。
    */


    // 这表示找到所有以当前位置结尾、增加0的个数为偶数的子串
    result += num[current_parity];

    // 更新当前奇偶性的计数
    num[current_parity]++;
  }

  cout << result << endl;
  return 0;
}